package com.atguigu.myrule;

import com.netflix.loadbalancer.IRule;
import com.netflix.loadbalancer.RandomRule;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @Author: robert.song
 * @Date: Created in 2021/7/28
 */
@Configuration
public class MySelfRule {
    @Bean
    public IRule myRule(){
//        内置的负载均衡策略：
//        1 RoundRobinRule 默认轮询
//        2 RandomRule 随机
//        3 WeightedResponseTimeRule  对轮询的扩展，相应越快选择权越高，即加权轮询
//        4 RetryRule 获取失败在指定时间内重试以获取可用服务
//        5 BestAvailableRule 先过滤掉多次访问故障而处于断路器跳闸状态的服务，再选择并发量最小的服务返回
//        6 AvailabilityFilteringRule 先过滤掉故障实例，再选择并发量最小的服务
//        ZoneAvoidanceRule 默认规则，复合判断server所在区域的性能和server的可用性选择适合的机器
        return new RandomRule();
    }
}
